using System;

namespace AuthorizeNET {
	public class TransactionDetails : INameValueSerializable {
		private double amount;
		private string currency_code;
		private TransactionMethod payment_method;

		public TransactionDetails(double amount, string currency_code, TransactionMethod method) {
			this.amount = amount;
			this.currency_code = currency_code;
			this.payment_method = method;
		}

		public TransactionDetails()
			: this(0.0D, "USD", TransactionMethod.CreditCard) { }

		[KeyName("x_amount")]
		public double Amount {
			get { return (this.amount); }
			set { this.amount = value; }
		}

		[KeyName("x_currency_code")]
		public string CurrencyCode {
			get { return (this.currency_code); }
			set { this.currency_code = value; }
		}

		[KeyName("x_method")]
		public TransactionMethod PaymentMethod {
			get { return (this.payment_method); }
			set { this.payment_method = value; }
		}
	}
}
